package com.woniuxy.service;

import com.woniuxy.entity.RbacManager;
import com.woniuxy.entity.RbacManagerEntity;

import java.util.List;
import java.util.Set;

public interface RbacManagerService {

    int addOne(RbacManagerEntity rbacManagerEntity);

    int delete(int id);

    List<RbacManager> findAll();
    List<RbacManager> findAll(RbacManager rbacManager);

    int update(RbacManagerEntity rbacManagerEntity);

    /**
     * 所有注释都要写在接口上！
     * @param username
     * @return
     */
    String findPassword(String username);

    /**
     * @TODO: 2021/10/21  这个接口是我用来生成token
     * @return
     */
    String sign(String username,String password);

    /**
     * 这个接口用来，进行密码验证
     * @param username 用户名
     * @param password 密码
     * @return true 表示匹配成功 false 表示账号密码匹配错误
     */
    boolean verifyMyPassword(String username, String password);

    /**
     * 这个方法是通过用户名查出完整的对象所有信息，用来存入redis
     * @param username 用户名
     * @return 一个用户对象
     */
    RbacManager findManager(String username);

    /**
     * 这里是用来把token和用户存入数据库中
     * @param token
     * @param rbacManager
     * @return boolean true表示保持成功
     */
    boolean saveTokenToRedis(String token, RbacManager rbacManager);

    /**
     *  贱名知意 通过token去redis中查询 如果有对象说明redis没有过期
     *  如果没有对象，则说明token过期了
     * @param token subject.login传入的token
     * @return RbacManager  对象
     */
    RbacManager findRbacManagerByTokenFromRedis(String token);

    Set<String> findAllRolesById(int id);
}
